When communication is to be performed by connecting one host and one device by using an interface such as the centronics, USB, or IEEE1394, a plurality of logic channels are connected between the host and device during one session of a communication protocol in order to control various functions, and data is transferred in each channel.
When the SBP-2 as a data communication protocol on the IEEE1394 is used, one data buffer is looked up for one ORB as a data transfer unit in one logical unit which is a pair of one initiator and one target. Accordingly, communication is performed by a single data channel in one way, or one-way, half-duplex data communication is performed. This makes a plurality of logic channels difficult to realize. The standard of the SBP-3 as a function expanded version of the SBP-2 is currently being defined. This SBP-3 is so expanded to allow two data buffers to be looked up for ORB as a data transfer unit in a logical unit, thereby realizing two data transfer channels for one logical unit.
Unfortunately, in data transfer performed by the SBP-3, flow control of the two data transfer channels is performed for each ORB. Therefore, if data transmission and reception cannot be performed any longer in one data transfer channel for some reason, or if data transfer in one data transfer channel is slower than in the other, the fast channel is influenced by the slow channel. This is so because even when access to one data buffer is normally terminated, if access to the other data buffer is not completed, a completion notification (status block) with respect to the ORB cannot be transmitted to the initiator of the SBP-3, and this delays data transfer as a logical unit.
Also, when a command set by which two data buffers and two commands can be arranged in one ORB is to be realized by the SBP-3, data transfer can be more efficiently performed in some cases depending on a target device if each command is executed under independent conditions.